package com.meihuayishu.backend.repository;

import com.meihuayishu.backend.entity.Hexagram;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

@Repository
public interface HexagramRepository extends JpaRepository<Hexagram, Long> {
    
    /**
     * 根据卦名查找卦象
     * @param name 卦名
     * @return 卦象对象
     */
    Optional<Hexagram> findByName(String name);
    
    /**
     * 根据卦象编码查找卦象
     * @param code 卦象编码
     * @return 卦象对象
     */
    Optional<Hexagram> findByCode(String code);
    
    /**
     * 根据卦象符号查找卦象
     * @param symbol 卦象符号
     * @return 卦象对象
     */
    Optional<Hexagram> findBySymbol(String symbol);
    
    /**
     * 根据卦象符号查找所有匹配的卦象
     * @param symbol 卦象符号
     * @return 卦象对象列表
     */
    List<Hexagram> findAllBySymbol(String symbol);
    
    /**
     * 根据五行属性查找卦象
     * @param fiveElements 五行属性
     * @return 卦象列表
     */
    List<Hexagram> findByFiveElements(String fiveElements);
    
    /**
     * 根据自然象征查找卦象
     * @param naturalSymbol 自然象征
     * @return 卦象列表
     */
    List<Hexagram> findByNaturalSymbolContaining(String naturalSymbol);
    
    /**
     * 根据关键字搜索卦象
     * @param keyword 关键字
     * @return 卦象列表
     */
    @Query("SELECT h FROM Hexagram h WHERE h.name LIKE %:keyword% OR h.description LIKE %:keyword%")
    List<Hexagram> searchByKeyword(@Param("keyword") String keyword);
}